package com.vitogiovanni.tobook.servlet;


import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.Key;
import com.vitogiovanni.tobook.entity.Gestore;
import com.vitogiovanni.tobook.entity.GestoreEndpoint;
import com.vitogiovanni.tobook.entity.Locale;
import com.vitogiovanni.tobook.entity.LocaleEndpoint;
import com.vitogiovanni.tobook.entity.Menu;
import com.vitogiovanni.tobook.entity.MenuEndpoint;
import com.vitogiovanni.tobook.entity.Servizio;
import com.vitogiovanni.tobook.entity.ServizioEndpoint;
import com.vitogiovanni.tobook.entity.TipologiaLocale;
import com.vitogiovanni.tobook.entity.TipologiaLocaleEndpoint;

/**
 * Servlet implementation class InvitaLavoroServlet
 */
public class InserisciLocaleServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public InserisciLocaleServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		//TipologiaLocaleEndpoint tipologiaLocaleEndpoint = new TipologiaLocaleEndpoint();
		
		//CollectionResponse<TipologiaLocale> tipi = tipologiaLocaleEndpoint.listTipologiaLocale(null, null);
		
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		TipologiaLocaleEndpoint tipologiaLocaleEndpoint = new TipologiaLocaleEndpoint();
		GestoreEndpoint gestoreEndpoint = new GestoreEndpoint();
		ServizioEndpoint servizioEndpoint = new ServizioEndpoint();
		
		Servizio servizioLocale = new Servizio();
		TipologiaLocale tipologiaLocale = new TipologiaLocale();
		
		Locale locale = new Locale();
		
		String nome = req.getParameter("nome");
		String gestoreMail = req.getParameter("gestoreMail");
		String email = req.getParameter("email");
		String telefono = req.getParameter("telefono");
		String nazione = req.getParameter("nazione");
		String citta = req.getParameter("citta");
		String via = req.getParameter("via");
		String coordinataX = req.getParameter("coordinataX");
		String coordinataY = req.getParameter("coordinataY");
		String numeroPosti = req.getParameter("numeroPosti");
		String sitoWeb = req.getParameter("sitoweb");
		String[] tipoLocale = req.getParameterValues("tipoLocale");
		String[] servizio = req.getParameterValues("servizio");
		
		Gestore gestore = gestoreEndpoint.findByEmail(gestoreMail);
		List<Locale> locali = gestore.getLocali();
		
		locale.setNome(nome);
		locale.setIdGestore(gestore);
		locale.setEmail(email);
		locale.setTelefono(telefono);
		locale.setNazione(nazione);
		locale.setCitta(citta);
		locale.setVia(via);
		locale.setCoordinataX(Double.parseDouble(coordinataX));
		locale.setCoordinataY(Double.parseDouble(coordinataY));
		locale.setNumeroPosti(Integer.parseInt(numeroPosti));
		locale.setSitoWeb(sitoWeb);

		
		Set<Key> tipi = new HashSet<Key>();
		Set<Key> servizi = new HashSet<Key>();
		
		for (String temp : tipoLocale) {
			tipologiaLocale = tipologiaLocaleEndpoint.findByName(temp);
			tipi.add(tipologiaLocale.getId());
		}
			
		for (String temp : servizio) {
			servizioLocale = servizioEndpoint.findByName(temp);
			servizi.add(servizioLocale.getId());
		}
		
		locale.setTipologia(tipi);
		locale.setServizi(servizi);
		
		locali.add(locale);
		
		gestore.setLocali(locali);
		
		//gestoreEndpoint.updateGestore(gestore);
		gestoreEndpoint.addLocale(gestore.getId().getId(),locale);
		
		
		//localeEndpoint.insertLocale(locale);
		
        resp.sendRedirect("/inserimento.html");
	}
	
	
}

